The growth in network-based computing, which is also often referred to as “cloud computing”, has provided alternatives for designing and implementing computing resources, as compared with traditional approaches where a user (or entity) purchases hardware and software and then manages that hardware and software on an ongoing basis. For instance, many Information Technology (IT) organizations wish to transform their computing resources infrastructure and operations into a network (cloud) based infrastructure, whether as virtual computing resources in a public cloud, virtual computing resources in a private cloud, physical (on-premise) computing resources, or as a combination of these different types of computing resources in a hybrid-cloud infrastructure.
Such approaches may allow for IT organizations, when providing computing services to their clients, to take advantage of existing public cloud services, as well have access to new public cloud services as they become available. However, managing such hybrid clouds, in order to offer meaningful services to an IT organization's (e.g., internal or external) customers, without exposing the complexities of the hybrid environment is a challenge. For example, a group of customers of a given IT organization may wish to make use of a specific set of computing resources, such as servers that are running on a specific operating system (OS). The customers of that group may not care whether those servers are running on physical computing resources, running as on-premise virtual machines (VMs), running as Amazon EC2 instances, running as vApps in a vCloud such as a Terremark Enterprise Cloud, or as a combination of such resources. The customers of that group may care, however, that the IT organization provides them with those servers in specific network configurations, so the customers are able to install and run user applications that operate in those specific network configurations.
One of the motivations for an IT organization to implement computing resources in cloud-based infrastructures is that such approaches allow for “workload flexing”, which may include a number of different techniques including “workload movement” and “cloud-bursting.” As used in this disclosure, workload flexing generally involves dynamically modify the computing resource(s) (e.g., memory, processing bandwidth, a number of servers, etc.) that are assigned to a given “workload.” A workload may be associated with a single application, or it may be associated with several applications that may be operating collaboratively. As indicated above, this dynamic modification of computing resources can take a number of forms, including workload movement and cloud bursting. Workload movement may involve moving a given workload from one set of resources to another, as a whole. In comparison, cloud bursting may involve expanding set of computing resources for a given workload (e.g., with public or private cloud resources) for a temporary amount of time, e.g., to accommodate a transient increase in the given workload. In such approaches, an original set of computing resources (e.g., on-premise resources) assigned to the given workload remain active and the temporary (e.g., cloud) computing resources are added and removed, as needed.
Currently, if an IT organization implements the servers from the above example in a hybrid-cloud infrastructure with user applications required by its customer (e.g., using a combination of on-premise resources, private cloud resources and public cloud resources) and wishes to provide the ability to allow for flexing, work movement and cloud-bursting, the IT organization must make implementation choices that either limit flexibility or adversely impact performance. These choices include, for example, standardizing all of an organization's cloud-based resources on a single technology. This approach, however, prevents users from accessing features and/or services that are available on other cloud-based technologies.
Another implementation choice that can be made is to separate (silo) the use of cloud services and on-premise services such that a given user application runs in only one environment. This approach, however, exposes the complexity of the hybrid network to the IT organization's customers, making it the customers' responsibility to make decisions as how to implement a hybrid-cloud infrastructure, as well as effectively making it the customers' responsibility to manage that hybrid environment, rather than providing customers with a unified (e.g., seamless) view of an organizations' available computing resources.
Another implementation choice is to add a level of virtualization to cloud-based virtual resources as well as adding a virtualization layer to on-premise physical resources, such as by using multiple levels of hypervisors (virtual machine managers), where a top level hypervisor is used to standardize communication between respective hypervisors that manage VMs on different cloud based technologies and/or standardize communication between cloud-based resources and on-premise, physical resources. This approach, however, severely impacts application performance due to the use of the additional layer of virtualization.